package fr.efrei.abrousserajaspera.cloudPandemic;

import java.util.ArrayList;

public class Ville {
	private int nombreHabitants = 0;
	private ArrayList<Habitant> habitants;

	public Ville(int nombreHabitants, ArrayList<Habitant> habitants) {
		super();
		this.nombreHabitants = nombreHabitants;
		this.habitants = new ArrayList<Habitant>();
		this.habitants = habitants;
	}

	public ArrayList<Habitant> getHabitants() {
		return habitants;
	}

	public void setHabitants(ArrayList<Habitant> habitants) {
		this.habitants = habitants;
	}

	public int getNombreHabitants() {
		return this.nombreHabitants;
	}

	public void setNombreHabitants(int nombreHabitants) {
		this.nombreHabitants = nombreHabitants;
	}

	public void guerir(Habitant hab) {
		if(hab.isInfecte() && hab.isQuarantaine()){
			hab.sortDeQuarantaine();
			System.out.println("Je suis gueri!");
		}
	}

	public void kill(String nom) {
		int i = 0;
		while (i < nombreHabitants && this.habitants.get(i).getNom() != nom) {
			i++;
		}
		if (this.habitants.get(i).getNom() == nom
				&& this.habitants.get(i).isInfecte()) {
			this.habitants.get(i).setKilled(true);
			this.habitants.remove(i);
		}
		this.nombreHabitants--;
	}

	public int compteurInfecte() {
		int nombreHabInfecte = 0;
		for (int j = 0; j < nombreHabitants; j++) {
			if (this.habitants.get(j).isInfecte())
				nombreHabInfecte++;
		}
		return nombreHabInfecte;
	}

	public int compteurQuarantaine() {
		int nombreHabQuar = 0;
		for (int j = 0; j < nombreHabitants; j++) {
			if (this.habitants.get(j).isQuarantaine())
				nombreHabQuar++;
		}
		return nombreHabQuar;
	}

	public int compteurVie() {
		int nombreEnVie = 0;
		for (int j = 0; j < nombreHabitants; j++) {
			if (!this.habitants.get(j).isKilled())
				nombreEnVie++;
		}
		return nombreEnVie;
	}

	public static void main(String[] args) {
		Habitant gaetan = new Habitant("Gaetan", true, false, false);
		Habitant volatiana = new Habitant("Volatiana", false, false, false);
		Habitant tiers = new Habitant("tiers", false, false, false);
		Habitant hab4 = new Habitant("hab4", true, false, false);
		Habitant hab5 = new Habitant("hab5", false, true, false);
		Habitant hab6 = new Habitant("hab6", true, true, false);
		Habitant hab7 = new Habitant("hab7", false, false, false);

		ArrayList<Habitant> habs = new ArrayList<Habitant>();
		habs.add(gaetan);
		habs.add(volatiana);
		habs.add(tiers);
		habs.add(hab4);
		habs.add(hab5);
		habs.add(hab6);
		habs.add(hab7);

		Ville paris = new Ville(habs.size(), habs);
		paris.getHabitants().get(1).miseEnQuarantaine();

		paris.guerir(gaetan);
		System.out.println("Nombre en vie : \n" + paris.compteurVie());

		paris.kill("hab6");

		System.out.println("Nombre infecte : \n" + paris.compteurInfecte());
		System.out.println("Nombre quarantaine : \n"
				+ paris.compteurQuarantaine());
		System.out.println("Nombre en vie : \n" + paris.compteurVie());
	}
}
